Create Function PermisosUsuario(@IdUsuario smallint) returns table 
as

	return(select U.USERNAME,U.NOMBRE 'Nombre Usuario',M.NOMBRE 'Modulo',A.NOMBRE 'Accion' from USUARIOS U inner join Permisos P on U.IDUSUARIO = @IdUsuario and p.IDUSUARIO = @idUsuario inner join Modulos M on M.IDMODULO = P.IDMODULO Inner join Acciones A on A.IDACCION = P.IDACCION)

go
--Prueba Procedimiento
--select * from PermisosUsuario (2)
alter function ListarUsuarios() returns table
as
	return(Select * from Usuarios)

go
Create function ListarUsuariosYPermisos () Returns table 
as
	
	return(select U.USERNAME,U.NOMBRE 'Nombre Usuario',M.NOMBRE 'Modulo',A.NOMBRE 'Accion' from USUARIOS U inner join Permisos P on U.IDUSUARIO = p.IDUSUARIO inner join Modulos M on M.IDMODULO = P.IDMODULO Inner join Acciones A on A.IDACCION = P.IDACCION)


go

alter function VerificarPermisosModulo(@IdUsuario tinyint,@IdModulo tinyint, @IdAccion tinyint) returns int
as
begin
	declare @Existe tinyint
	Set @existe = (Select COUNT(P.IDMODULO) from Permisos P inner join Modulos M on P.IDUSUARIO = @IdUsuario and P.IDMODULO =@IdModulo inner join Acciones A on A.IDACCION = @IdAccion and P.IdAccion = @IdAccion)
	
	if @existe >0
	begin
		return(1)
	end
	return (0)	
end
--Prueba de la Funcion
--Select dbo.VerificarPermisosModulo (2,2,3)

--Verificar los usuarios y los modulos a los que accede con los permisos respectivos
--select * from USUARIOS U inner join PERMISOS P on U.IDUSUARIO = P.IDUSUARIO


--select * from USUARIOS

